#version 330 core
// vim: set filetype=cpp :vim

layout(points) in;
layout(triangle_strip, max_vertices=6) out;

uniform mat4 mProj;
uniform float umpp;
flat in int mark[];

flat out int colori;

void main(void) {
	vec3 cent0=gl_in[0].gl_Position.xyz/gl_in[0].gl_Position.w;
	int m=mark[0];
	if(m!=0) {
		if(m>4)
			m=4;
		vec2 corners[4]=vec2[](
			vec2(umpp, .5*umpp),
			vec2(-umpp, .5*umpp),
			vec2(-umpp, -.5*umpp),
			vec2(umpp, -.5*umpp)
		);
		for(int k=0; k<2; k++) {
			for(int j=0; j<3; j++) {
				gl_Position=mProj*vec4(cent0.xy+corners[(j+m)%4]*2.0+vec2(0, (k-.5)*umpp), cent0.z, 1.0);
				colori=m-1;
				EmitVertex();
			}
			EndPrimitive();
		}
	}
}

